home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / endscroll.s < prev    next >
Text File  |  1997-11-28  |  4KB  |  309 lines

  1.  
  2. red    macro
  3.     move.l    d0,-(sp)
  4.     move.l    #60000,d0
  5. .redloop
  6.     move.w    #$f00,$dff180
  7.     dbra    d0,.redloop
  8.     move.l    (sp)+,d0
  9.     endm
  10.  
  11. green    macro
  12.     move.l    d0,-(sp)
  13.     move.l    #60000,d0
  14. .gedloop
  15.     move.w    #$0f0,$dff180
  16.     dbra    d0,.gedloop
  17.     move.l    (sp)+,d0
  18.     endm
  19.  
  20. blue    macro
  21.     move.l    d0,-(sp)
  22.     move.l    #60000,d0
  23. .bedloop
  24.     move.w    #$00f,$dff180
  25.     dbra    d0,.bedloop
  26.     move.l    (sp)+,d0
  27.     endm
  28.  
  29.  
  30.  
  31. ; The game has been finished!
  32.  
  33. ; Deallocate all memory, ask for scroll screen
  34. ; memory. Load end of game music (whatever that
  35. ; is). Print top 16 lines of text then fade up.
  36. ;  After a few seconds, scroll it upwards with
  37. ; the text following....
  38.  
  39.     red
  40.  
  41.  move.l LEVELDATA,d1
  42.  move.l d1,a1
  43.  move.l #120000,d0
  44.  move.l 4.w,a6
  45.  jsr -210(a6)
  46.  
  47.  move.l TEXTSCRN,d1
  48.  move.l d1,a1
  49.  move.l #10240*2,d0
  50.  move.l 4.w,a6
  51.  jsr -210(a6)
  52.  
  53.  jsr RELEASEWALLMEM
  54.  jsr RELEASESAMPMEM
  55.  jsr RELEASEFLOORMEM
  56.  jsr RELEASEOBJMEM
  57.  
  58.     green
  59.  
  60.  move.l #2,d1    
  61.  move.l #10240*4,d0
  62.  move.l 4.w,a6
  63.  jsr -198(a6)
  64.  move.l d0,TEXTSCRN
  65.  
  66.  move.w d0,TSPTl
  67.  swap d0
  68.  move.w d0,TSPTh
  69.  swap d0
  70.  move.w d0,TSPTl2
  71.  swap d0
  72.  move.w d0,TSPTh2
  73.  
  74.  clr.b DOSCROLLING
  75.  
  76.  move.w #0,TXTCOLL
  77.  move.w #0,BOTLET
  78.  move.w #0,ALLTEXT
  79.  
  80.  move.l #$dff000,a6    ; a6 points at the first custom chip register.
  81.  move.l #TEXTCOP,$80(a6)    ; Point the copper at our copperlist.
  82.  
  83.  
  84.  
  85.  
  86.  move.l 4.w,a6
  87.  lea VBLANKIntB(pc),a1
  88.  moveq #INTB_COPER,d0
  89.  jsr _LVOAddIntServer(a6)
  90.  
  91.  
  92.  move.w #$a201,TSCP
  93.  
  94.  move.w #$20,$1dc(a6)     ; beamcon0
  95.  
  96.  jsr CLRTWEENSCRN
  97.  add.l #20480,TEXTSCRN
  98.  jsr CLRTWEENSCRN
  99.  sub.l #20480,TEXTSCRN
  100.  
  101.  move.l #ENDGAMETEXT,a0
  102.  move.w #0,d0
  103.  moveq #15,d7
  104.  
  105.     blue
  106.  
  107. PUTONS
  108.  move.l TEXTSCRN,a1
  109.  bsr DRAWLINEOFTEXT 
  110.  add.w #82,a0
  111.  addq #1,d0
  112.  dbra d7,PUTONS
  113.  
  114.  move.w #$000,d0
  115.  move.w #15,d1
  116. .fdup2
  117.  move.w #15,d3
  118.  move.w #0,d2
  119. .fdup
  120.  move.w d0,ALLTEXT
  121.  move.w d2,ALLTEXTLOW
  122.  add.w #$111,d2
  123.  
  124. .wtframe:
  125.  btst        #5,$dff000+intreqrl
  126.  beq.s        .wtframe
  127.  move.w    #$0020,$dff000+intreq
  128.  dbra        d3,.fdup
  129.  add.w        #$111,d0
  130.  dbra        d1,.fdup2
  131.  
  132.  
  133.  
  134.  
  135.  move.w #400,d3
  136.  
  137. .fdupwt
  138. .wtframet:
  139.  btst        #5,$dff000+intreqrl
  140.  beq.s     .wtframet
  141.  move.w     #$0020,$dff000+intreq
  142.  dbra         d3,.fdupwt
  143.  
  144.  move.w #0,SCROLLPOS
  145.  move.l #ENDOFGAMESCROLL,SCROLLPT
  146.  move.l #ENDOFGAMESCROLL,OLDSCROLL
  147.  move.w #17,NEXTLINE
  148.  move.w #17,LASTLINE
  149.  
  150.  st DOSCROLLING
  151.  
  152. SCROLLINGLOOP:
  153.  tst.b DONEXTLINE
  154.  beq.s SCROLLINGLOOP
  155.  clr.b DONEXTLINE
  156.  
  157.  move.l SCROLLPT,a0
  158.  move.l a0,OLDSCROLL
  159.  tst.b (a0)
  160.  blt.s .notex
  161.  add.w #80,a0
  162. .notex
  163.  adda.w #2,a0
  164.  cmp.l #ENDOFEND,a0
  165.  blt.s .nostartscroll
  166.  move.l #ENDOFGAMESCROLL,a0
  167. .nostartscroll:
  168.  move.l a0,SCROLLPT
  169.  
  170.  move.w NEXTLINE,d0
  171.  move.l TEXTSCRN,a1
  172.  bsr CLEARLINEOFTEXT
  173.  tst.b (a0)
  174.  blt.s .okitsaline
  175.  bsr DRAWLINEOFTEXT
  176. .okitsaline:
  177.  
  178.  move.l OLDSCROLL,a0
  179.  move.w LASTLINE,d0
  180.  move.l TEXTSCRN,a1
  181.  bsr CLEARLINEOFTEXT
  182.  tst.b (a0)
  183.  blt.s .okitsatwo
  184.  bsr DRAWLINEOFTEXT
  185. .okitsatwo:
  186.  
  187.  move.w NEXTLINE,d0
  188.  sub.w #16,d0
  189.  move.w d0,LASTLINE
  190.  add.w #1,d0
  191.  and.w #15,d0
  192.  add.w #16,d0
  193.  move.w d0,NEXTLINE
  194.  bra SCROLLINGLOOP
  195.  
  196.  
  197. VBLANKIntB
  198.  dc.l 0,0
  199.  dc.b NT_INTERRUPT,100
  200.  dc.l Prefsname
  201.  dc.l 0
  202.  dc.l SCROLLINTER
  203.  
  204.  
  205. SCROLLINTER:
  206.  
  207. ;    move.w #$fff,$dff180
  208.  
  209.     tst.b    DOSCROLLING
  210.     beq.b    .skip
  211.  
  212.     bsr    dosome
  213. .skip
  214.     
  215.     moveq    #0,d0
  216.     rts
  217.  
  218. CLEARLINEOFTEXT:
  219.  move.l d0,-(a7)
  220.  
  221.  muls #80*16,d0
  222.  moveq #0,d1
  223.  move.l TEXTSCRN,a2
  224.  add.l d0,a2
  225.  move.w #(20*2),d0
  226. CLRIT:
  227.  move.l d1,(a2)+
  228.  move.l d1,(a2)+
  229.  move.l d1,(a2)+
  230.  move.l d1,(a2)+
  231.  move.l d1,(a2)+
  232.  move.l d1,(a2)+
  233.  move.l d1,(a2)+
  234.  move.l d1,(a2)+
  235.  dbra d0,CLRIT
  236.  
  237.  move.l (a7)+,d0
  238.  rts
  239.  
  240.  
  241. dosome:
  242.  
  243.  movem.l d0/d1,-(a7)
  244.  
  245.  move.w TOPLET,d0
  246.  move.w BOTLET,d1
  247.  sub.w #$222,d1
  248.  add.w #$222,d0
  249.  move.w d0,TOPLET
  250.  move.w d1,BOTLET
  251.  
  252.  sub.w #1,scrolldownaline
  253.  bgt.s .noline
  254.  
  255.  sub.w #1,LINESLEFTTOSCROLL
  256.  bgt.s .NONOTHERLINE
  257.  move.w #16,LINESLEFTTOSCROLL
  258.  st DONEXTLINE
  259. .NONOTHERLINE
  260.  
  261.  move.w #$333,TOPLET
  262.  move.w #$ccc,BOTLET
  263.  
  264.  move.w SCROLLPOS,d0
  265.  move.w d0,d1
  266.  add.w #1,d0
  267.  and.w #255,d0
  268.  move.w d0,SCROLLPOS
  269.  
  270.  muls #80,d0
  271.  muls #80,d1
  272.  add.l TEXTSCRN,d0
  273.  add.l TEXTSCRN,d1
  274.  move.w d0,TSPTl
  275.  swap d0
  276.  move.w d0,TSPTh
  277.  move.w d1,TSPTl2
  278.  swap d1
  279.  move.w d1,TSPTh2
  280.  
  281.  move.w #3,scrolldownaline
  282.  
  283. .noline:
  284.  movem.l (a7)+,d0/d1
  285.  rts
  286.  
  287. LINESLEFTTOSCROLL:
  288.  dc.w 14
  289.  
  290. DONEXTLINE:
  291.     dc.w 0
  292.  
  293. scrolldownaline:
  294.     dc.w 3
  295.  
  296. SCROLLPOS:
  297.     dc.w 0
  298.  
  299. DOSCROLLING:
  300.     dc.w 0
  301.  
  302. SCROLLPT:
  303.     Dc.l 0
  304.  
  305. OLDSCROLL: dc.l 0
  306. NEXTLINE: dc.w 0
  307. LASTLINE: dc.w 0
  308.  
  309.